<html>
    <head>
        <meta charset="utf-8">
        
            <script src="lib/bindings/utils.js"></script>
            <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/vis-network/9.1.2/dist/dist/vis-network.min.css" integrity="sha512-WgxfT5LWjfszlPHXRmBWHkV2eceiWTOBvrKCNbdgDYTHrT2AeLCGbF4sZlZw3UMN3WtL0tGUoIAKsu8mllg/XA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
            <script src="https://cdnjs.cloudflare.com/ajax/libs/vis-network/9.1.2/dist/vis-network.min.js" integrity="sha512-LnvoEWDFrqGHlHmDD2101OrLcbsfkrzoSpvtSQtxK3RMnRV0eOkhhBN2dXHKRrUU8p2DGRTk35n4O8nWSVe1mQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
            
        
<center>
<h1></h1>
</center>

<!-- <link rel="stylesheet" href="../node_modules/vis/dist/vis.min.css" type="text/css" />
<script type="text/javascript" src="../node_modules/vis/dist/vis.js"> </script>-->
        <link
          href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/css/bootstrap.min.css"
          rel="stylesheet"
          integrity="sha384-eOJMYsd53ii+scO/bJGFsiCZc+5NDVN2yr8+0RDqr0Ql0h+rP48ckxlpbzKgwra6"
          crossorigin="anonymous"
        />
        <script
          src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/js/bootstrap.bundle.min.js"
          integrity="sha384-JEW9xMcG8R+pH31jmWH6WWP0WintQrMb4s7ZOdauHnUtxwoG2vI5DkLtS3qm9Ekf"
          crossorigin="anonymous"
        ></script>


        <center>
          <h1></h1>
        </center>
        <style type="text/css">

             #mynetwork {
                 width: 100%;
                 height: 800px;
                 background-color: #ffffff;
                 border: 1px solid lightgray;
                 position: relative;
                 float: left;
             }

             

             

             
        </style>
    </head>


    <body>
        <div class="card" style="width: 100%">
            
            
            <div id="mynetwork" class="card-body"></div>
        </div>

        
        

        <script type="text/javascript">

              // initialize global variables.
              var edges;
              var nodes;
              var allNodes;
              var allEdges;
              var nodeColors;
              var originalNodes;
              var network;
              var container;
              var options, data;
              var filter = {
                  item : '',
                  property : '',
                  value : []
              };

              

              // This method is responsible for drawing the graph, returns the drawn network
              function drawGraph() {
                  var container = document.getElementById('mynetwork');

                  

                  // parsing and collecting nodes and edges from the python
                  nodes = new vis.DataSet([{"color": "#4ECDC4", "font": {"color": "#333333"}, "id": 16, "label": "HDFS\u8bfb\u5199\u6d41\u7a0b\u4e0e\u6570\u636e\u5206\u5757\u7b56\u7565", "shape": "dot", "size": 10.03232189520023, "title": "\u7c7b\u578b: KnowledgePoint\nPageRank: 0.00\nID: 16"}, {"color": "#45B7D1", "font": {"color": "#333333"}, "id": 89, "label": "\u5f02\u6784\u5b58\u50a8\u5206\u5757\u7b56\u7565\u5bf9\u6bd4", "shape": "triangle", "size": 10.01874, "title": "\u7c7b\u578b: SubKnowledgePoint\nPageRank: 0.00\nID: 89"}, {"color": "#FF6B6B", "font": {"color": "#333333"}, "id": 1, "label": "Hadoop\u6587\u4ef6\u7cfb\u7edfHDFS", "shape": "star", "size": 12.0, "title": "\u7c7b\u578b: Chapter\nPageRank: 0.10\nID: 1"}, {"color": "#FF6B6B", "font": {"color": "#333333"}, "id": 2, "label": "YARN\u8d44\u6e90\u8c03\u5ea6\u6846\u67b6", "shape": "star", "size": 12.0, "title": "\u7c7b\u578b: Chapter\nPageRank: 0.10\nID: 2"}, {"color": "#4ECDC4", "font": {"color": "#333333"}, "id": 26, "label": "Hive\u5143\u6570\u636e\u7ba1\u7406\u673a\u5236", "shape": "dot", "size": 10.031276170414559, "title": "\u7c7b\u578b: KnowledgePoint\nPageRank: 0.00\nID: 26"}, {"color": "#45B7D1", "font": {"color": "#333333"}, "id": 461, "label": "\u5143\u6570\u636e\u7248\u672c\u63a7\u5236\u673a\u5236", "shape": "triangle", "size": 10.01798, "title": "\u7c7b\u578b: SubKnowledgePoint\nPageRank: 0.00\nID: 461"}, {"color": "#4ECDC4", "font": {"color": "#333333"}, "id": 20, "label": "HDFS\u4e0e\u4e91\u5b58\u50a8\u96c6\u6210\u5b9e\u8df5", "shape": "dot", "size": 10.088271214915615, "title": "\u7c7b\u578b: KnowledgePoint\nPageRank: 0.00\nID: 20"}, {"color": "#4ECDC4", "font": {"color": "#333333"}, "id": 18, "label": "\u6570\u636e\u5197\u4f59\u4e0e\u5bb9\u9519\u673a\u5236", "shape": "dot", "size": 10.055349449084273, "title": "\u7c7b\u578b: KnowledgePoint\nPageRank: 0.00\nID: 18"}, {"color": "#4ECDC4", "font": {"color": "#333333"}, "id": 17, "label": "NameNode\u9ad8\u53ef\u7528\u5b9e\u73b0\u65b9\u6848", "shape": "dot", "size": 10.03901364580144, "title": "\u7c7b\u578b: KnowledgePoint\nPageRank: 0.00\nID: 17"}, {"color": "#4ECDC4", "font": {"color": "#333333"}, "id": 19, "label": "HDFS\u8054\u90a6\u67b6\u6784\u8bbe\u8ba1", "shape": "dot", "size": 10.027173580037012, "title": "\u7c7b\u578b: KnowledgePoint\nPageRank: 0.00\nID: 19"}, {"color": "#4ECDC4", "font": {"color": "#333333"}, "id": 25, "label": "\u65f6\u5e8f\u6570\u636e\u573a\u666f\u4e0b\u7684HBase\u4f18\u5316", "shape": "dot", "size": 10.199464415643046, "title": "\u7c7b\u578b: KnowledgePoint\nPageRank: 0.01\nID: 25"}, {"color": "#4ECDC4", "font": {"color": "#333333"}, "id": 24, "label": "HBase\u4e0eRDBMS\u6027\u80fd\u5bf9\u6bd4\u5206\u6790", "shape": "dot", "size": 10.058051794036052, "title": "\u7c7b\u578b: KnowledgePoint\nPageRank: 0.00\nID: 24"}, {"color": "#4ECDC4", "font": {"color": "#333333"}, "id": 23, "label": "\u4e8c\u7ea7\u7d22\u5f15\u5b9e\u73b0\u65b9\u6848\u5bf9\u6bd4", "shape": "dot", "size": 10.0422849247006, "title": "\u7c7b\u578b: KnowledgePoint\nPageRank: 0.00\nID: 23"}, {"color": "#4ECDC4", "font": {"color": "#333333"}, "id": 22, "label": "Region\u5206\u88c2\u4e0e\u8d1f\u8f7d\u5747\u8861\u7b56\u7565", "shape": "dot", "size": 10.035353164101167, "title": "\u7c7b\u578b: KnowledgePoint\nPageRank: 0.00\nID: 22"}, {"color": "#4ECDC4", "font": {"color": "#333333"}, "id": 21, "label": "HBase\u6570\u636e\u6a21\u578b\u4e0e\u5b58\u50a8\u7ed3\u6784", "shape": "dot", "size": 10.031247964600588, "title": "\u7c7b\u578b: KnowledgePoint\nPageRank: 0.00\nID: 21"}]);
                  edges = new vis.DataSet([{"arrows": "to", "color": "#FF0000", "from": 16, "title": "\u5b66\u4e60\u6b65\u9aa4 1", "to": 89, "width": 2}, {"arrows": "to", "color": "#FF0000", "from": 89, "title": "\u5b66\u4e60\u6b65\u9aa4 2", "to": 1, "width": 2}, {"arrows": "to", "color": "#FF0000", "from": 1, "title": "\u5b66\u4e60\u6b65\u9aa4 3", "to": 2, "width": 2}, {"arrows": "to", "color": "#FF0000", "from": 2, "title": "\u5b66\u4e60\u6b65\u9aa4 4", "to": 26, "width": 2}, {"arrows": "to", "color": "#FF0000", "from": 26, "title": "\u5b66\u4e60\u6b65\u9aa4 5", "to": 461, "width": 2}, {"arrows": "to", "color": "#00FF00", "dashes": true, "from": 1, "title": "\u63a8\u8350\u77e5\u8bc6\u70b9", "to": 20}, {"arrows": "to", "color": "#00FF00", "dashes": true, "from": 1, "title": "\u63a8\u8350\u77e5\u8bc6\u70b9", "to": 18}, {"arrows": "to", "color": "#00FF00", "dashes": true, "from": 1, "title": "\u63a8\u8350\u77e5\u8bc6\u70b9", "to": 17}, {"arrows": "to", "color": "#00FF00", "dashes": true, "from": 1, "title": "\u63a8\u8350\u77e5\u8bc6\u70b9", "to": 16}, {"arrows": "to", "color": "#00FF00", "dashes": true, "from": 1, "title": "\u63a8\u8350\u77e5\u8bc6\u70b9", "to": 19}, {"arrows": "to", "color": "#00FF00", "dashes": true, "from": 2, "title": "\u63a8\u8350\u77e5\u8bc6\u70b9", "to": 25}, {"arrows": "to", "color": "#00FF00", "dashes": true, "from": 2, "title": "\u63a8\u8350\u77e5\u8bc6\u70b9", "to": 24}, {"arrows": "to", "color": "#00FF00", "dashes": true, "from": 2, "title": "\u63a8\u8350\u77e5\u8bc6\u70b9", "to": 23}, {"arrows": "to", "color": "#00FF00", "dashes": true, "from": 2, "title": "\u63a8\u8350\u77e5\u8bc6\u70b9", "to": 22}, {"arrows": "to", "color": "#00FF00", "dashes": true, "from": 2, "title": "\u63a8\u8350\u77e5\u8bc6\u70b9", "to": 21}]);

                  nodeColors = {};
                  allNodes = nodes.get({ returnType: "Object" });
                  for (nodeId in allNodes) {
                    nodeColors[nodeId] = allNodes[nodeId].color;
                  }
                  allEdges = edges.get({ returnType: "Object" });
                  // adding nodes and edges to the graph
                  data = {nodes: nodes, edges: edges};

                  var options = {
    "configure": {
        "enabled": false
    },
    "edges": {
        "color": {
            "inherit": true
        },
        "smooth": {
            "enabled": true,
            "type": "dynamic"
        }
    },
    "interaction": {
        "dragNodes": true,
        "hideEdgesOnDrag": false,
        "hideNodesOnDrag": false
    },
    "physics": {
        "enabled": true,
        "stabilization": {
            "enabled": true,
            "fit": true,
            "iterations": 1000,
            "onlyDynamicEdges": false,
            "updateInterval": 50
        }
    }
};

                  network = new vis.Network(container, data, options);

                  

                  

                  


                  

                  return network;

              }
              drawGraph();
        </script>
    </body>
</html>